<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
<!-- saved from url=(0013)about:internet -->
<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <style xmlns="" type="text/css">
    /* This style sets a margin around the entire page */
        html, body {
            margin: 10px;
        }

        p {
            font: normal 16px verdana, sans-serif;
            margin: 0;
            padding-bottom:12px;
        }

        h1 {
            font: bold 25px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        h2 {
            font: bold 19px verdana, sans-serif;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        h3 {
            font: bold 19px verdana, sans-serif !important;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        li {
            font: normal 16px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 18px;
            padding-top: 0;
            padding-bottom: 0;
        }

        .pdparam {
            font: italic 16px verdana, sans-serif;
        }

                .term {
                        font: italic 16px verdana, sans-serif;
                        font-weight: normal;
                }

                .type {
                        font: normal 16px verdana, sans-serif !important;
                }

                .parameter {
                        font-style: italic;
                        }

        a:link, a:visited {
            color: blue;
            text-decoration: none;
            font: normal 16px;
        }

        a:hover {
            background-color: #FFFF99;
            font: normal 16px;
        }

        div.funcsynopsis {
            text-align: left;
            background-color: #e6e6e6;
            font: normal 16px verdana, sans-serif;
                        padding-top: 10px;
                        padding-bottom: 10px;
        }

        div.funcsynopsis table {
            border-collapse: separate;
            font: normal 16px verdana, sans-serif;
        }

        div.funcsynopsis td {
            background-color: #e6e6e6;
            border: 0 solid #000;
            padding: 1px;
            font: normal 16px verdana, sans-serif;
        }

        div.refsect1 {
            font-family: verdana, sans-serif;
            font-size: 16px;
        }

        code.constant {
            font: normal 16px courier new, monospace !important;
        }

                span.errorname {
            font: normal 16px verdana, sans-serif !important;
        }

        code.function {
            font: bold 16px verdana, sans-serif !important;
        }

        b.fsfunc {
            font: bold 16px verdana, sans-serif !important;
        }

        code.varname {
            font: italic 16px verdana, sans-serif;
        }

        code.replaceable {
            font: italic 16px courier new, monospace;
        }

        code.funcdef {
            font: normal 16px verdana, sans-serif !important;
        }

        .citerefentry {
            font: normal 16px verdana, sans-serif !important;
        }

        .parameter {
            font-style: italic;
        }

        code.fsfunc {
            font: normal 16px verdana, sans-serif !important;
        }

        /* PARAMETER: This style controls spacing between the terms in Parameter section */
        dt {
            margin-top: 15px;
        }

        /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
        div.refsect1 table {
            width: 100%;
                        margin-top: 10px;
            background-color: #FFF;
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
                        font: normal 16px verdana, sans-serif;
        }

        div.refsect1 th {
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
            font: bold 16px verdana, sans-serif;
        }

        div.refsect1 td {
            background-color: #FFF;
            padding: 5px;
            vertical-align: text-top;
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
            font: normal 16px verdana, sans-serif;
        }

                  div.refsect1 p{
            font: normal 16px verdana, sans-serif;
            margin-top: 8px;
            margin-bottom: 8px;
            padding-top: 0;
            padding-bottom: 0;
        }


        /* EXAMPLE: These styles apply only to the Example section */
        div.refsect2 {
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 table {
            margin-top: 0;
            background-color: #e6e6e6;
            width: 100%;
            border: 0 solid #000;
            padding: 2px;
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 td {
            background-color: #e6e6e6;
            font: normal 16px courier new, monospace !important;
                        white-space:pre;
        }

        /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
        div.refsect3 {
            font: normal 11px verdana, sans-serif;
            margin-top: 50px;
            margin-bottom: 20px;
            padding-top: 0;
            padding-bottom: 0;
        }

</style>
    <title>enqueue_kernel</title>
    <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
    <meta name="keywords" content="enqueue_kernel" />
  </head>
  <body>
    <div class="refentry">
      <a id="id-1"></a>
      <div class="titlepage"></div>
      <div xmlns="" class="refnamediv">
        <a xmlns="http://www.w3.org/1999/xhtml" id="enqueue_kernel"></a>
        <h1>enqueue_kernel</h1>
        <p>
            Enqueue the block for execution to <code xmlns="http://www.w3.org/1999/xhtml" class="varname">queue</code>.
        </p>
      </div>
      <div class="refsynopsisdiv">
        <h2></h2>
        <div class="funcsynopsis">
          <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
            <tr valign="bottom">
              <td>
                <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">
                    <a class="link" href="scalarDataTypes.html" target="pagedisplay">int</a>
                    <strong class="fsfunc">
                        enqueue_kernel
                    </strong>
                (</code>
                <td>
                <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="otherDataTypes.html" target="pagedisplay">queue_t</a>
                 <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">queue</var>
            , </td>
              </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="enums.html#kernel_enqueue_flags_t" target="pagedisplay">kernel_enqueue_flags_t</a>
                 <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">flags</var>
            , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                const <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="otherDataTypes.html" target="pagedisplay">ndrange_t</a>
                 <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">ndrange</var>
            , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">void</a>
                ( <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">^block)(void)</var>
            <code>)</code></td>
            </tr>
          </table>
        </div>
        <div class="funcsynopsis">
          <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
            <tr valign="bottom">
              <td>
                <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">
                    <a class="link" href="scalarDataTypes.html" target="pagedisplay">int</a>
                    <strong class="fsfunc">
                        enqueue_kernel
                    </strong>
                (</code>
                <td>
                <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="otherDataTypes.html" target="pagedisplay">queue_t</a>
                 <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">queue</var>
            , </td>
              </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="enums.html#kernel_enqueue_flags_t" target="pagedisplay">kernel_enqueue_flags_t</a>
                 <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">flags</var>
            , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                const <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="otherDataTypes.html" target="pagedisplay">ndrange_t</a>
                 <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">ndrange</var>
            , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">uint</a>
                 <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">num_events_in_wait_list</var>
            , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                const <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="otherDataTypes.html" target="pagedisplay">clk_event_t</a>
                * <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">event_wait_list</var>
            , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="otherDataTypes.html" target="pagedisplay">clk_event_t</a>
                * <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">event_ret</var>
            , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">void</a>
                ( <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">^block)(void)</var>
            <code>)</code></td>
            </tr>
          </table>
        </div>
        <div class="funcsynopsis">
          <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
            <tr valign="bottom">
              <td>
                <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">
                    <a class="link" href="scalarDataTypes.html" target="pagedisplay">int</a>
                    <strong class="fsfunc">
                        enqueue_kernel
                    </strong>
                (</code>
                <td>
                <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="otherDataTypes.html" target="pagedisplay">queue_t</a>
                 <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">queue</var>
            , </td>
              </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="enums.html#kernel_enqueue_flags_t" target="pagedisplay">kernel_enqueue_flags_t</a>
                 <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">flags</var>
            , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                const <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="otherDataTypes.html" target="pagedisplay">ndrange_t</a>
                 <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">ndrange</var>
            , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">void</a>
                ( <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">^block)(local void *, ...)</var>
            , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">uint</a>
                 <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">size0, ...</var>
            <code>)</code></td>
            </tr>
          </table>
        </div>
        <div class="funcsynopsis">
          <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
            <tr valign="bottom">
              <td>
                <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">
                    <a class="link" href="scalarDataTypes.html" target="pagedisplay">int</a>
                    <strong class="fsfunc">
                        enqueue_kernel
                    </strong>
                (</code>
                <td>
                <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="otherDataTypes.html" target="pagedisplay">queue_t</a>
                 <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">queue</var>
            , </td>
              </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="enums.html#kernel_enqueue_flags_t" target="pagedisplay">kernel_enqueue_flags_t</a>
                 <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">flags</var>
            , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                const <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="otherDataTypes.html" target="pagedisplay">ndrange_t</a>
                 <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">ndrange</var>
            , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">uint</a>
                 <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">num_events_in_wait_list</var>
            , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                const <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="otherDataTypes.html" target="pagedisplay">clk_event_t</a>
                * <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">event_wait_list</var>
            , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="otherDataTypes.html" target="pagedisplay">clk_event_t</a>
                * <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">event_ret</var>
            , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">void</a>
                ( <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">^block)(local void *, ...)</var>
            , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">uint</a>
                 <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">size0, ...</var>
            <code>)</code></td>
            </tr>
          </table>
        </div>
      </div>
      <div class="refsect1">
        <a id="description"></a>
        <h2>Description</h2>
        <p>
            Enqueue the block for execution to <code class="varname">queue</code>. 
            If an event is returned, <code class="function">enqueue_kernel</code>
            performs an implicit retain on the returned event.
        </p>
        <p>
            OpenCL 2.0 allows a kernel to independently enqueue to the same device, without host
            interaction. A kernel may enqueue code represented by Block syntax, and control execution
            order with event dependencies including user events and markers. There are several advantages
            to using the Block syntax: it is more compact; it does not require a 
            <span class="type">cl_kernel</span> object; and
            enqueuing can be done as a single semantic step.
        </p>
        <p>
            The <code class="function">enqueue_kernel</code> built-in function 
            allows a work-item to enqueue a block. Work-items can
            enqueue multiple blocks to a device queue(s).
        </p>
        <p>
            The <span class="type">kernel_enqueue_flags_t</span> argument to 
            <code class="function">enqueue_kernel</code> built-in functions can 
            be used to specify when the child kernel begins 
            execution. Supported values are described in the 
            table below. (Implementations are not required to honor this flag. 
            Implementations may not schedule kernel launch earlier than 
            the point specified by this flag, however):
        </p>
        <div class="informaltable">
          <table class="informaltable" border="1">
            <colgroup>
              <col align="left" class="col1" />
              <col align="left" class="col2" />
            </colgroup>
            <thead>
              <tr>
                <th align="left">kernel_enqueue_flags_t enum</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <code class="constant">CLK_ENQUEUE_FLAGS_NO_WAIT</code>
                </td>
                <td align="left">
                        Indicates that the enqueued kernels 
                        do not need to wait for the parent 
                        kernel to finish execution before 
                        they begin execution.
                    </td>
              </tr>
              <tr>
                <td align="left">
                  <code class="constant">CLK_ENQUEUE_FLAGS_WAIT_KERNEL</code>
                </td>
                <td align="left">
                        Indicates that all work-items of the 
                        parent kernel must finish executing 
                        and all immediate side effects 
                        committed before the enqueued 
                        child kernel may begin execution.
                        (Immediate meaning not side effects resulting from child kernels. 
                        The side effects would include stores to global 
                        memory and pipe reads and writes.)
                    </td>
              </tr>
              <tr>
                <td align="left">
                  <code class="constant">CLK_ENQUEUE_FLAGS_WAIT_WORK_GROUP</code>
                </td>
                <td align="left">
                        Indicates that the enqueued kernels 
                        wait only for the workgroup that 
                        enqueued the kernels to finish 
                        before they begin execution.
                        This acts as a memory synchronization point between 
                        work-items in a work-group and child kernels enqueued by 
                        work-items in the work-group.
                    </td>
              </tr>
            </tbody>
          </table>
        </div>
        <p>
            NOTE: The <span class="type">kernel_enqueue_flags_t</span> 
            flags are useful when a kernel enqueued from the 
            host and executing on a device enqueues kernels 
            on the device. The kernel enqueued from the 
            host may not have an event associated with it. 
            The <span class="type">kernel_enqueue_flags_t</span> flags allow 
            the developer to indicate when the child 
            kernels can begin execution.
        </p>
      </div>
      <div class="refsect1">
        <a id="notes"></a>
        <h2>Notes</h2>
        <p>
            A block passed to <code class="function">enqueue_kernel</code> 
            can have arguments declared to be a pointer to local
            memory. The <code class="function">enqueue_kernel</code> built-in 
            function variants allow blocks to be enqueued with a
            variable number of arguments. Each argument must be 
            declared to be a pointer of a data type to
            local memory. These <code class="function">enqueue_kernel</code> 
            built-in function variants also have a corresponding
            number of arguments each of type uint that follow 
            the block argument. These arguments
            specify the size of each local memory pointer 
            argument of the enqueued block.
        </p>
        <p>
            If the
            <a class="citerefentry" href="cl_khr_device_enqueue_local_arg_types.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_device_enqueue_local_arg_types</span></span></a>
            extension is enabled, then replace all occurrences of
            <code class="code">local void *</code>
            in the table above with
            <code class="code">local gentype *</code>. 
            We use the generic type name <code class="code">gentype</code> 
            to indicate the built-in OpenCL C scalar or
            vector integer or floating-point data types, or 
            any user defined type built from these scalar and
            vector data types which can be used as the type 
            of the pointee of the arguments of the kernel
            enqueue functions listed above.
        </p>
      </div>
      <div class="refsect2">
        <a id="example1"></a>
        <h3>
            Example
        </h3>
        <p>
            Below are some examples of how to enqueue a block.
        </p>
        <div class="informaltable">
          <table class="informaltable" border="0">
            <colgroup>
              <col align="left" class="col1" />
            </colgroup>
            <tbody>
              <tr>
                <td align="left">
kernel void
my_func_A(global int *a, global int *b, global int *c)
{
    ...
}

kernel void
my_func_B(global int *a, global int *b, global int *c)
{
    ndrange_t ndrange;
    // build ndrange information
    ...

    // example – enqueue a kernel as a block
    enqueue_kernel(get_default_queue(), ndrange,
                           ^{my_func_A(a, b, c);});
    ...
}

kernel void
my_func_C(global int *a, global int *b, global int *c)
{
    ndrange_t ndrange;
    // build ndrange information
    ...

    // note that a, b and c are variables in scope of 
    // the block
    void (^my_block_A)(void) = ^{my_func_A(a, b, c);};

    // enqueue the block variable
    enqueue_kernel(get_default_queue(), 
                   CLK_ENQUEUE_FLAGS_WAIT_KERNEL,
                   ndrange, 
                   my_block_A);
    ...
}
                        </td>
              </tr>
            </tbody>
          </table>
        </div>
        <p>
            The example below shows how to declare a block literal and enqueue it.
        </p>
        <div class="informaltable">
          <table class="informaltable" border="0">
            <colgroup>
              <col align="left" class="col1" />
            </colgroup>
            <tbody>
              <tr>
                <td align="left">
kernel void
my_func(global int *a, global int *b)
{
    ndrange_t ndrange;
    // build ndrange information
    ...

    // note that a, b and c are variables in scope of 
    // the block
    void (^my_block_A)(void) = 
          ^{ size_t id = get_global_id(0);
             b[id] += a[id]; 
        };

    // enqueue the block variable
    enqueue_kernel(get_default_queue(), 
                   CLK_ENQUEUE_FLAGS_WAIT_KERNEL,
                   ndrange, 
                   my_block_A);

    // or we could have done the following
    enqueue_kernel(get_default_queue(), 
                   CLK_ENQUEUE_FLAGS_WAIT_KERNEL,
                   ndrange,
                   ^{ 
                     size_t id = get_global_id(0);
                     b[id] += a[id]; 
                    }; 
}
                        </td>
              </tr>
            </tbody>
          </table>
        </div>
        <p>
            NOTE: Blocks passed to <code class="function">enqueue_kernel</code> 
            cannot use global variables or stack variables 
            local to the enclosing lexical scope that are a 
            pointer type in the local or private address space.
        </p>
        <div class="informaltable">
          <table class="informaltable" border="0">
            <colgroup>
              <col align="left" class="col1" />
            </colgroup>
            <tbody>
              <tr>
                <td align="left">
kernel void
foo(global int *a, local int *lptr, …)
{
    enqueue_kernel(get_default_queue(),
           CLK_ENQUEUE_FLAGS_WAIT_KERNEL,
           ndrange,
           ^{ 
              size_t id = get_global_id(0);
              local int *p = lptr; // undefined behavior
            };
}
                        </td>
              </tr>
            </tbody>
          </table>
        </div>
        <p>
            See section 6.13.17 of the specification for more information and examples.
        </p>
      </div>
      <div class="refsect1">
        <a id="errors"></a>
        <h2>Errors</h2>
        <p>
            <code class="function">enqueue_kernel</code> returns 
            <span class="errorname">CL_SUCCESS</span> if the
            block is enqueued successfully and returns 
            <span class="errorname">CL_ENQUEUE_FAILURE</span>
            otherwise. If the –g compile option is 
            specified in compiler options passed to 
            <a class="citerefentry" href="clCompileProgram.html"><span class="citerefentry"><span class="refentrytitle">clCompileProgram</span></span></a> or 
            <a class="citerefentry" href="clBuildProgram.html"><span class="citerefentry"><span class="refentrytitle">clBuildProgram</span></span></a>
            when compiling or building the parent program, the following
            errors may be returned instead of 
            <span class="errorname">CL_ENQUEUE_FAILURE</span> to indicate 
            why <code class="function">enqueue_kernel</code> 
            failed to enqueue the block:
        </p>
        <div class="itemizedlist">
          <ul class="itemizedlist" style="list-style-type: disc; ">
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CLK_INVALID_QUEUE</span> if <code class="varname">queue</code> is not
              a valid device queue.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CLK_INVALID_NDRANGE</span> if <code class="varname">ndrange</code>
                is not a valid ND-range descriptor or if the 
                program was compiled with <code class="code">–cl-uniform-work-group-size</code> 
                and the local_work_size is specified in <code class="varname">ndrange</code> 
                but the global_work_size specified in <code class="varname">ndrange</code> 
                is not a multiple of the local_work_size.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CLK_INVALID_EVENT_WAIT_LIST</span> if 
                <code class="varname">event_wait_list</code> is NULL and
                <code class="varname">num_events_in_wait_list</code> &gt; 0, or if 
                <code class="varname">event_wait_list</code> is not NULL and
                <code class="varname">num_events_in_wait_list</code> is 0, or if event objects in 
                <code class="varname">event_wait_list</code> are not valid events.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CLK_DEVICE_QUEUE_FULL</span> if 
                <code class="varname">queue</code> is full.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CLK_INVALID_ARG_SIZE</span> if size of local memory arguments is 0.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CLK_EVENT_ALLOCATION_FAILURE</span>
                if <code class="varname">event_ret</code> is not NULL and an event could not
                be allocated.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CLK_OUT_OF_RESOURCES</span>
                if there is a failure to queue the block in <code class="varname">queue</code> 
                because of insufficient resources needed to execute the kernel.
            </li>
          </ul>
        </div>
      </div>
      <div class="refsect1">
        <a id="specification"></a>
        <h2>Specification</h2>
        <p>
            <img src="pdficon_small1.gif" />

            <a href="https://www.khronos.org/registry/cl/specs/opencl-2.0-openclc.pdf#namedest=enqueueKernelFunctions" target="OpenCL Spec">OpenCL Specification</a>
        </p>
      </div>
      <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>Copyright © 2007-2015 The Khronos Group Inc.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.
</div>
    </div>
  </body>
</html>
